package design_patterns

import "fmt"

type Subject interface {
	Do()
}

type RealSubject struct{}

func (RealSubject) Do() {
	fmt.Println("I'm doing")
}

type Proxy struct {
	real RealSubject
}

func (p Proxy) Do() {

	fmt.Println("被代理类执行前可以做一些事情")

	p.real.Do()

	fmt.Println("被代理类执行后可以做一些事情")
}
